using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.Xml.Linq;
namespace Entidades
{
	public class EstadosPostulacion
	{
		private const string __ErrorAlta = "No se pudo dar el alta (EstadosPostulacion), ";
		private const string __ErrorBaja = "No se pudo dar la baja (EstadosPostulacion), ";
		private const string __ErrorModificacion = "No se pudo hacer la modificacion (EstadosPostulacion), ";
		private const string __ErrorTraerUno = "No se pudo Traer Uno (EstadosPostulacion), ";
		private const string __ErrorTraerTodos = "No se pudo Traer Todos (EstadosPostulacion), ";
		private int _Id;
		private int _IdPostulacion;
		private int _Estado;

		private DateTime? _Fecha;
		#region "Propiedades"
		public int Id {
			get { return _Id; }
			set { _Id = value; }
		}
		public int IdPostulacion {
			get { return _IdPostulacion; }
			set { _IdPostulacion = value; }
		}
		public int Estado {
			get { return _Estado; }
			set { _Estado = value; }
		}
		public DateTime? Fecha {
			get { return _Fecha; }
			set { _Fecha = value; }
		}
		#endregion
		#region "Lazys"
		private Postulacion _Postulacion;
		public Postulacion Postulacion {
			get {
				if (_Postulacion == null) {
					_Postulacion = new Postulacion(_IdPostulacion);
				}
				return _Postulacion;
			}
		}
		#endregion
		public EstadosPostulacion()
		{
		}
		public EstadosPostulacion(int Id)
		{
			EstadosPostulacion estadospostulacion = traerUno(Id);
            this._Id = estadospostulacion.Id;
            this._IdPostulacion = estadospostulacion.IdPostulacion;
            this._Estado = estadospostulacion.Estado;
            this._Fecha = estadospostulacion.Fecha;
		}
		#region "Metodos Publicos"
		public void Alta()
		{
			try {
				validaAlta();
				DALEstadosPostulacion.Alta(this);
			} catch (Exception ex) {
				throw new Exception(__ErrorAlta + ex.Message);
			}
		}
		public void Baja()
		{
			try {
				validaBaja();
				DALEstadosPostulacion.Baja(_Id);
			} catch (Exception ex) {
				throw new Exception(__ErrorBaja + ex.Message);
			}
		}
		public void Modificar()
		{
			try {
				validaModificacion();
				DALEstadosPostulacion.Modificar(this);
			} catch (Exception ex) {
				throw new Exception(__ErrorModificacion + ex.Message);
			}
		}
		#region "Metodos Estaticos"
		private EstadosPostulacion traerUno(int Id)
		{
			try {
				return DALEstadosPostulacion.traerUno(Id);
			} catch (Exception ex) {
				throw new Exception(__ErrorTraerUno + ex.Message);
			}
		}
		public static List<EstadosPostulacion> TraerTodos()
		{
			try {
				return DALEstadosPostulacion.TraerTodos();
			} catch (Exception ex) {
				throw new Exception(__ErrorTraerTodos + ex.Message);
			}
		}
		#region "Lazys"
		public static List<EstadosPostulacion> getAllByIdPostulacion(int IdPostulacion)
		{
			try {
				return DALEstadosPostulacion.getAllByIdPostulacion(IdPostulacion);
			} catch (Exception ex) {
				throw new Exception("ErrorDeLazyLoad(EstadosPostulacion)" + ex.Message);
			}
		}
		#endregion
		#endregion
		#endregion
		#region "Metodos Privados"
		private void validaAlta()
		{
			//lanza excepcion si no valida
			//ej If _Descripcion = " Then Throw New Exception("la descripcion no debe estar vacia")
			throw new NotImplementedException();
		}
		private void validaBaja()
		{
			//lanza excepcion si no valida
			throw new NotImplementedException();
		}
		private void validaModificacion()
		{
			//lanza excepcion si no valida
			//ej If _Descripcion = " Then Throw New Exception("la descripcion no debe estar vacia")
			throw new NotImplementedException();
		}
		#endregion
	}
}
